前篇介紹完用 Emacs 寫 Ruby 程式的設定篇,我們這一篇實際來看一下這些功能的使用
Ruby 是一個物件導向語言,建立類別是很重要的工作,我們啟動 Emacs 按 Ctrl-x Ctrl-f 先來建立一個類別 greet.rb,首先看一下環境設定
先看程式補全的 Company backends 的設定,按 Ctrl-h v company-backends
沒錯,有三個群組,第一個群組使用 company-robe
再來看一下語法檢查 flychekc 的設定,按 Ctrl-c ! v 
Ruby-mode 的 flycheck 支援 chef-foodcritic, rubocop, reek, rubylint 等等後端,我們介紹使用的rubocop 已經看到執行檔跟設定檔都已經設定,可以使用
我們開始打入 cla 會啟動 company 的補全 
看一下補全的來源,按 Meta-x company-diag,原來來自於 yasnippet 
看一下 yasnipeet 的預設 snippets,按 Meta-x yas-describe-table,預設很多的 ruby 程式片段,當然包含了類別的定義 
用 def 來展開類別函式 
ruby-mode 會顯示函式或類別,區塊的區間 
如果語法有錯誤,flycheck 會以粉紅色顯示錯誤,並在狀態列下顯示 FlyC: 1/0 ,前面的數字是錯誤,後面的數字是警告 
看詳細的問題,按 Ctrl-c ! l, 是 end 的問題 
繼續打完簡單的類別定義,我們故意留下一些多餘的行 
 
開啟一個 test.rb,打入 requ,奇怪,為什麼沒有補全?檢查一下 company-backends 
用 company-robe,但 robe 好像沒作用
需要啟動 Meta-x robe-start 
需要先啟動 ruby console  打 yes 
不行,no matching directory found 
這是因為它試著啟動 inf-ruby-console-auto 
這 inf-ruby-console-auto 是為 ruby 的一些專案使用的,官網上的文件 
因為我們不在專案內,所以無法自動啟動,我們手工啟動 Ctrl-c Ctrl-s inf-ruby 
再來啟動 robe-start 
可以啟動了,回到 test.rb, 打入 req ,補全出現了 
我們將 greet.rb 的類別匯入,來實現一個物件,打入 Gre ,沒有出現補全?因為沒有將 greet.rb 載入 inf-ruby ,按 Ctrl-c Ctrl-l 來載入 
這時就會讓 test.rb 看到 greet.rb 的函式 
同時 Eldoc 也會在小緩衝區顯示類別的函式定義 
Meta-. 就可以跳到函式的定義,Meta-, 跳回  
可以將程式用 Ctrl-space 劃起來,按 Ctrl-c Ctrl-r 到 inf-ruby 執行 
相關簡報:簡報
相關程式:Github,請下載到 ~/.emacs.d 啟動 Emacs 會自動安裝個套件
相關資訊:我的部落格